package com.qike.duola.service;

import com.qike.duola.dto.*;
import com.qike.duola.vo.TrainInfoVo;
import com.qike.duola.vo.TrainListVo;
import com.qike.duola.vo.TrainUserListVo;

import java.io.IOException;
import java.util.List;

public interface TrainService {


    /**
     * 培训列表模型
     * @param trainListDto
     * @return
     */
    TrainListVo trainList(TrainListDto trainListDto);

    /**
     * 添加培训
     * @param addTrainDto
     */
    void addTrain(AddTrainDto addTrainDto) throws IOException;

    /**
     * 培训详情
     * @param id
     * @return
     */
    TrainInfoVo trainInfo(Integer id) throws Exception;

    /**
     * 培训编辑
     * @param trainEditDto
     */
    void trainEdit(TrainEditDto trainEditDto);

    /**
     * 发布培训/取消发布
     * @param trainOpenOrCloseDto
     */
    void trainOpenOrClose(TrainOpenOrCloseDto trainOpenOrCloseDto);

    /**
     * 删除培训
     * @param trainDelDto
     */
    void trainDel(TrainDelDto trainDelDto);

    /**
     * 参加培训
     * @param trainJoinDto
     */
    void trainJoin(TrainJoinDto trainJoinDto) throws Exception;

    /**
     * 取消培训
     * @param trainCancelDto
     */
    void trainCancel(TrainCancelDto trainCancelDto) throws Exception;

    /**
     * 参与名单
     * @param id
     * @return
     */
    List<TrainUserListVo> trainUserList(Integer id) throws Exception;

    /**
     * 参与名单编辑
     * @param trainUserEditDto
     */
    void trainUserEdit(TrainUserEditDto trainUserEditDto);
}
